<?php
namespace app\user\controller;//定义以下类所在的命名空间
use think\View;//引用命名空间
use think\Controller;
use think\Session;
use think\Db;
use app\common\model\Users;
class Index extends Controller//定义一个类（控制器）,继承TP5的Controller类
{    
	public function index()
	{      
		$classes=Db::name('Class')->select();
		$this->assign('clist',$classes);//为前台模板变量绑定类别值
		//查最新的12个商品，注意链式查询的使用
		$list=Db::name('Products')->order('pId desc')->limit(12)->select();
		$this->assign('products',$list);//为前台模板变量绑定值
		return view();//返回视图	
	} 

	public function register()    
	{      //return alert_error('您好，欢迎光顾来到博客园'); 
		return view();//直接返回视图	
	}
	public function registerCheck()    
	{    	$user = new Users($_POST);
		if($user->uname=="" || $user->upwd==""){
			//return alert_error('错误，用户名/密码不能为空！');
			return $this->error('错误，用户名/密码不能为空！');
		}
		if($user->upwd!=input("upwd1")){//使用input函数可以获取输入框upwd1的值
			//return alert_error('错误，两次输入密码不相同！');
			return $this->error('错误，两次输入密码不相同！');
		}		
		try{
			// 过滤post数组中的非数据表字段数据
			$user->allowField(true)->save();
		}
		catch(\Exception $e){  //捕获异常
    		$this->error($e->getMessage());
		}       //return view('index');
	    //return $this->redirect('index');
	    $this->success('注册成功！', 'index');	
	}
    	public function login()    
	{       
		return view();//直接返回视图	
	}	
	//接收两个参数，注意参数名与html文件中的控件名相同	
	public function loginCheck($username='',$userpwd='')	
	{		
		//根据名字和密码查询记录        
		$user = Users::get(['uname' => $username, 'upwd' => $userpwd]);		
		if($user){			
			//登录成功，保存用户名到session			
			Session::set('username',$username);			
			//重定向			 
			return $this->redirect('index');		
		}
		else
		{			
			return $this->error('登录失败');		
		}	
	}
    //退出登录	
	public function logout()    
	{		
		// 删除（当前作用域）        
		Session::delete('username');		
		// 清除session（当前作用域）       
		//Session::clear();     	   
		return $this->redirect('index');	
	}
    	//商品列表
	public function product_list($cid="")
	{   
		$classes=Db::name('Class')->select();
		$this->assign('clist',$classes);  //输出所有类别（布局模板左边菜单用）   
		$tem=Db::name('Class')->where('cId',$cid)->find();
		$this->assign('cname',$tem['cName']);//输出当前要进查看的类别的名称
		//按类别号查商品且按时间降序排序，注意链式查询的使用
		$list=Db::name('Products')->where('pClassId',$cid)->order('pId desc')->limit(12)->select();
		$this->assign('products',$list);//输出要查看的类别的所有商品信息
		return view();//直接返回视图	
	} 
    //商品详情
	public function detail($id="")
	{   
		$classes=Db::name('Class')->select();
	$this->assign('clist',$classes);  //输出所有类别（布局模板左边菜单用）   
		$detail=Db::name('Products')->where('pId',$id)->find();//只查一行
		$this->assign('product',$detail);
		return view();//直接返回视图	
	} 
    //会员的台首页
	public function user()
    {
        $uname = Session::get("username");
        if(empty($uname)){
            $this->error("请先登录", url('user/index/login'));
        }
        
        // 获取统计数据
        $data = [
            'pendingOrders' => Db::name('orders')
                            ->where('uName', $uname)
                            ->where('status', '未付款')
                            ->count(),
            'shippingOrders' => Db::name('orders')
                            ->where('uName', $uname)
                            ->where('status', '已发货')
                            ->count(),
            'cartItems' => Db::name('shoppingcart')
                            ->where('uname', $uname)
                            ->count(),
            'recentOrders' => Db::name('orders')
                            ->where('uName', $uname)
                            ->order('orderId', 'desc')
                            ->limit(5)
                            ->select()
        ];
        
        $this->assign($data);
        return view();
    }
    	//添加到购物车
	public function addToCar($id="",$num=1)
	{   
		if($id=="" || $num=="")
		{
			$this->error("参数不能为空");			
		}
		$uname=Session::get("username");//取已登录的用户名
		if(empty($uname)){
			$this->error("请先登录","login");//未登录，跳转到登录页
		}
		//查询是否存在该商品
		$p=Db::name('Products')->where('pId',$id)->find();
		if(empty($p)){
			$this->error("不存在商品号为：{$id} 的商品");
		}
		//使用db类操作数据库不需要建立模型model
		//如果先建立model再通过model操作来操作数据库，相对简单些
        $carItem=Db::name('shoppingcart')->where('uname',$uname)->where('pId',$id)->find();
		try{
			if(empty($carItem)){//购物车中不存在该商品
				//构造数据
				$carItem = ['uname' => $uname, 'pId' => $id,'number'=>$num];
				Db::name('shoppingcart')->insert($carItem);		//增加记录	
			}
			else{//购物车中已存在该商品，数据加1
				$number=$carItem['number']+1;
				//修改记录
				Db::name('shoppingcart')->where('uname',$uname)->where('pid', $id)->update(['number' => $number]);			
			}
		}
		catch(\Exception $e){  //捕获异常
    		$this->error($e->getMessage());
		}
		//成功则返回提示信息
		return "<script>alert('已加入购物车!');history.go(-1);</script>";
	} 
    // 在 Index.php 控制器中添加
    public function search()
    {
        $keyword = input('keyword', ''); // 获取搜索关键词
        
        $classes = Db::name('Class')->select();
        $this->assign('clist', $classes);
        
        if (!empty($keyword)) {
            $list = Db::name('Products')
                ->where('pName', 'like', "%{$keyword}%")
                ->order('pId desc')
                ->select();
        } else {
            $list = [];
        }
        
        $this->assign('products', $list);
        $this->assign('keyword', $keyword);
        return view();
    }

}
